package com.sishu.websocket4.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class SaTokenConfigure implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {

//        // 添加 Sa-Token 拦截器，配置需要拦截的路径
//        registry.addInterceptor(new SaInterceptor(handler -> {
//                    // 匹配所有路径，并检查权限
//                    SaRouter.match("/**", r ->
//                            StpUtil.checkPermission(
//                                    SaHolder.getRequest().getRequestPath() // 获取当前请求路径
//                            ));
//                }))
//                .addPathPatterns("/**") // 拦截所有路径
//                .excludePathPatterns("/user/dologin") // 排除登录接口
//                .excludePathPatterns("/acc/register") // 排除注册接口
//                .excludePathPatterns("/websocketMessage/**") // 排除 WebSocket 消息接口
//                .excludePathPatterns("/user/islogin") // 排除检查登录状态接口
//                .excludePathPatterns("/public/**"); // 排除所有公共路径

        // 可以添加其他不需要登录的路径
        // .excludePathPatterns("/other/public/path")
        // 注册 Sa-Token 拦截器，定义详细认证规则
//        registry.addInterceptor(new SaInterceptor(handler -> {
//            // 根据路由划分模块，不同模块不同鉴权
//            SaRouter.match("/**", r ->
//                    StpUtil.checkPermission(
//                            SaHolder.getRequest().getRequestPath()//得到当前请求的path
//                    ));
//        })).addPathPatterns("/**").excludePathPatterns("/user/dologin")
//                .excludePathPatterns("/acc/register")
//                .excludePathPatterns("/websocketMessage")
//                .excludePathPatterns("/user/islogin");

//
//        registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin())) // 登录校验
//                .addPathPatterns("/**") // 拦截所有
//                .excludePathPatterns("/acc/register")
//                .excludePathPatterns("/user/dologin")
////                .excludePathPatterns("/websocketMessage")
//                .excludePathPatterns("/user/islogin");

    }

//    @Override
//    public void addInterceptors(InterceptorRegistry registry) {
//        // 注册 Sa-Token 拦截器，定义详细认证规则
//        registry.addInterceptor(new SaInterceptor(handler -> {
//            // 指定一条 match 规则
//            SaRouter
//                    .match("/**")    // 拦截的 path 列表，可以写多个 */
////                    .notMatch("/user/doLogin")        // 排除掉的 path 列表，可以写多个
//                    .check(r -> StpUtil.checkLogin());        // 要执行的校验动作，可以写完整的 lambda 表达式
//
//            // 根据路由划分模块，不同模块不同鉴权
//            SaRouter.match("/user/**", r -> StpUtil.checkPermission("user"));
//            SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin"));
//            SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods"));
//            SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders"));
//            SaRouter.match("/notice/**", r -> StpUtil.checkPermission("notice"));
//            SaRouter.match("/comment/**", r -> StpUtil.checkPermission("comment"));
//        })).addPathPatterns("/**").excludePathPatterns("/user/doLogin");
//    }

    // 注册 Sa-Token 拦截器，打开注解式鉴权功能
//    @Override
//    public void addInterceptors(InterceptorRegistry registry) {
//        // 注册 Sa-Token 拦截器，打开注解式鉴权功能
//        registry.addInterceptor(new SaInterceptor()).addPathPatterns("/**");
//
//
//    }

    // 注册拦截器
//    @Override
//    public void addInterceptors(InterceptorRegistry registry) {
//        // 注册 Sa-Token 拦截器，校验规则为 StpUtil.checkLogin() 登录校验。
//        registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin()))
//                .addPathPatterns("/**")
//                .excludePathPatterns("/user/doLogin");
//    }
//}
}